#include <bits/stdc++.h>
typedef long long i;
using namespace std;
int main() {
i n,k;
cin >> n >> k;
if (k == n){
cout << 1;
return 0;
} else if (k == n-1){
cout << 2;
return 0;
} else if (k == 1){
cout << n;
return 0;
} else if (k == 2){
if (n%2 == 0){
cout << n-2;
return 0;
} else{
cout << n-1;
return 0;
}
}
vector<i> state = {n, 2, 1}; //max#, even, last
if (n%2 == 1){
state[2] = 0;
state[0] = n+1;
}
///cout << "state " << state[0] << ": " << state[1] << " " << state[2] << endl;
while (state[0] > 1){
i new0, new1, new2;
new1 = (state[1]+1)*2;
new0 = state[0]/2;
if (new0%2 == 0){
new2 = 1 + state[2] + (state[1]/2);
}
else{
new0 -= 1;
new2 = 2 + state[2] + (state[1]);
}
state[0] = new0;
state[1] = new1;
state[2] = new2;
///cout << "state " << state[0] << ": " << state[1] << " " << state[2] << endl;
if (k <= state[2]){
cout << state[0]; return 0;
} else if (k <= state[1]/2) {
cout << state[0] - 1; return 0;
} else if (k <= state[1]){
if (state[0] > 4){
cout << state[0] - 2; return 0;
}
}
}
}
448A - Rewards | 1622A - Construct a Rectangle |
1620A - Equal or Not Equal | 1517A - Sum of 2050 |
620A - Professor GukiZ's Robot | 1342A - Road To Zero |
1520A - Do Not Be Distracted | 352A - Jeff and Digits |
1327A - Sum of Odd Integers | 1276A - As Simple as One and Two |
812C - Sagheer and Nubian Market | 272A - Dima and Friends |
1352C - K-th Not Divisible by n | 545C - Woodcutters |
1528B - Kavi on Pairing Duty | 339B - Xenia and Ringroad |
189A - Cut Ribbon | 1182A - Filling Shapes |
82A - Double Cola | 45A - Codecraft III |
1242A - Tile Painting | 1663E - Are You Safe |
1663D - Is it rated - 3 | 1311A - Add Odd or Subtract Even |
977F - Consecutive Subsequence | 939A - Love Triangle |
755A - PolandBall and Hypothesis | 760B - Frodo and pillows |
1006A - Adjacent Replacements | 1195C - Basketball Exercise |